import com.wego.bean.BaseConverter;
import com.wego.bean.ExcelConverter;
import com.wego.domain.details.${Entity}Details;
import com.wego.domain.dto.${Entity}DTO;
import com.wego.domain.entity.${Entity};
import com.wego.domain.excel.${Entity}Excel;
import com.wego.domain.vo.${Entity}VO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;

@Mapper(componentModel = "spring")
public interface ${Entity}Converter extends BaseConverter<${Entity}, ${Entity}VO,${Entity}Details, ${Entity}DTO>, ExcelConverter<${Entity}, ${Entity}Excel> {
    /**
     * 将${Entity}对象转换为${Entity}Details对象
     * 该方法会将${Entity}对象中的status编码转换为对应的文本描述
     *
     * @param ${obj} 源${Entity}对象，包含${desc}基本信息和状态编码
     * @return ${Entity}Details对象，包含转换后的${desc}详细信息，其中status为文本描述
     */
    @Mapping(target = "status", expression = "java(com.wego.domain.enums.${Entity}Status.getTextByCode(${obj}.getStatus()))")
    ${Entity}Details ${obj}2${obj}Details(${Entity} ${obj});

    /**
     * 将${Entity}对象转换为${Entity}Excel对象
     * 该方法会将${Entity}对象中的status编码转换为对应的文本描述，用于Excel导出
     *
     * @param ${obj} 源${Entity}对象，包含${desc}基本信息和状态编码
     * @return ${Entity}Excel对象，包含转换后的${desc}Excel信息，其中status为文本描述
     */
    @Mapping(target = "status", expression = "java(com.wego.domain.enums.${Entity}Status.getTextByCode(${obj}.getStatus()))")
    ${Entity}Excel ${obj}2${obj}Excel(${Entity} ${obj});

    /**
     * 将${Entity}Excel对象转换为${Entity}对象
     * 该方法会将${Entity}Excel对象中的status文本描述转换为对应的编码
     *
     * @param ${obj}Excel 源${Entity}Excel对象，包含从Excel导入的${desc}信息
     * @return ${Entity}对象，包含转换后的${desc}基本信息，其中status为编码
     */
    @Mapping(target = "status", expression = "java(com.wego.domain.enums.${Entity}Status.getCodeByText(${obj}Excel.getStatus()))")
    ${Entity} ${obj}Excel2${obj}(${Entity}Excel ${obj}Excel);

}
